
// Dart 是一个面向对象的语言，所以函数也是对象，属于 Function 对象。函数可以像参数一样传递给其他函数，这样便于回调。
// 所有函数都有返回值，如果没有指定返回值，则默认的返回值是 null。
void main(List<String> args){
  String s1 = "张三";
  String s2 = "李四";
  print(equal(s1,s2));

  printUserInfo(s1, "男", null, 18);
  printUserInfo(s2, "男", "北京");

  printUserInfo1(s1, "男", age: 18);
  printUserInfo1(s2, "男", from: "北京");
}



// 判断两个字符串是否相等函数
bool equal(String s1, String s2){
  return s1 == s2;
}


// 参数使用中括号“[]”括起来，用来表示是 可选位置参数 。使用等号“=”为参数设置默认值
void printUserInfo(String name, String sex, [String from = "中国", int age]){
  String info = "$name 的性别是 $sex";
  if(null != from){
    info += ", 来自 $from";
  }

  if(null != age){
    info += ", 今年 $age 岁";
  }

  print(info);
}

// 参数使用大括号“{}”括起来，用来表示是 可选命名参数 。使用等号“=”为参数设置默认值
void printUserInfo1(String name, String sex, {String from = "中国", int age}){
  String info = "$name 的性别是 $sex";
  if(null != from){
    info += ", 来自 $from";
  }

  if(null != age){
    info += ", 今年 $age 岁";
  }

  print(info);
}